home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / croutes.zip / MOVMEML.ASM < prev    next >
Assembly Source File  |  1983-12-14  |  2KB  |  86 lines

  1.     TITLE 'MOVMEML Move memory long'
  2.     COMMENT /*
  3. *  Name:
  4. *    movmeml
  5. *
  6. *  Synopsis:
  7. *
  8. *    movmeml(ss,s,ds,d,n);
  9. *    unsigned ss;        source segment
  10. *    char *s;        source memory block (offset)
  11. *    unsigned ds;        destination segment
  12. *    char *d;        destination memory block (offset)
  13. *    unsigned n;        number of bytes to transfer.
  14. *
  15. *  Description
  16. *    Moves memory from one location to another.  The function
  17. *    calls executes the same code as movmem,but sets the segment regesters
  18. *    ES and DS to the source segment and the destination segment.
  19. *
  20. *  Cautions
  21. *    Care must be taken in where the data is moved..
  22. */
  23. PGROUP    GROUP    PROG
  24. MOVMEMA STRUC
  25. OLD_BP    DW    ?    ;CALLER'S BP SAVE
  26. RETN    DW    ?    ;RETURN ADDRESS
  27. FROMS    DW    ?    ;FROM SEGMENT
  28. FROMO    DW    ?    ;FROM OFFSET
  29. TOARGS    DW    ?    ;TO SEGMENT
  30. TOARGO    DW    ?    ;TO OFFSET
  31. LEN    DW    ?    ;LENGTH TO MOVE (UNSIGNED)
  32. MOVMEMA ENDS
  33. PROG    SEGMENT BYTE PUBLIC 'PROG'
  34.     PUBLIC    MOVMEML,RETDSEG
  35.     EXTRN    MOVMEM:NEAR
  36.     ASSUME    CS:PGROUP
  37. SAVEDS    DW    ?
  38. SAVEES    DW    ?
  39. MOVMEML PROC    NEAR
  40.     PUSH    BP
  41.     MOV    BP,SP
  42.     MOV    CX,[BP].LEN
  43.     MOV    SI,[BP].FROMO
  44.     MOV    DI,[BP].TOARGO
  45. ;
  46.     PUSH    DS
  47.     PUSH    ES
  48.     MOV    AX,SS:[BP].TOARGS
  49.     MOV    ES,AX
  50.     MOV    AX,SS:[BP].FROMS
  51.     MOV    DS,AX
  52. ;
  53.      CMP       SI,DI
  54.      JB       X1
  55.      CLD
  56.      JMP       X2
  57. X1:     STD
  58.      ADD       SI,CX
  59.      ADD       DI,CX
  60.      DEC       SI
  61.      DEC       DI
  62. X2:  REP MOVSB
  63.     POP    ES
  64.     POP    DS
  65.     POP    BP
  66.     RET
  67. MOVMEML ENDP
  68.     COMMENT /*
  69. *  Name:
  70. *    retdseg
  71. *
  72. *  Synopsis:
  73. *
  74. *    n = retdseg();
  75. *    unsigned n;        contains the current data segment address
  76. *
  77. *  Description:
  78. *    Returns the curren data segment (DS) address.
  79. */
  80. RETDSEG PROC    NEAR
  81.     MOV    AX,DS
  82.     RET
  83. RETDSEG ENDP
  84. PROG    ENDS
  85.     END
  86.